#!/bin/sh

# bin目录绝对路径
dir=$(ls -l /opt/ |awk '/^d/ {print $NF}')
  for i in $dir
  do
  cd /opt/$i
done

BASE_PATH=`pwd`
echo $BASE_PATH

# 项目名称
APPLICATION=`ls $BASE_PATH/boot | awk 'BEGIN{FS=".jar"}{print $1}'`
# 项目启动jar包名称
APPLICATION_JAR="${APPLICATION}.jar"
# 外部配置文件绝对目录,如果是目录需要/结尾，也可以直接指定文件
for VAR in config resources
do
  if [ -d $VAR ]; then
    TEMP_DIR=$VAR
  fi
done

#配置文件目录
CONFIG_DIR=${BASE_PATH}"/"${TEMP_DIR}"/"

# 查找配置文件具体挂载位置
curl -X GET -m 5 "${UCMS_ADDR}/v1/health/getAddr" -o "/opt/config-center.env"
nacosConfig=`find / -type f -name config-center.env`

#获取Nacos的相关配置信息
NACOS_ADDR=`awk -F= 'NR==1{print $2}' ${nacosConfig}`
NACOS_NAMESPACE=`awk -F= 'NR==2{print $2}' ${nacosConfig}`
NACOS_GROUP=`awk -F= 'NR==3{print $2}' ${nacosConfig}`

# 执行检查次数
EXEC_COUNT=100
# 重试等待时间
WAIT_TIME=10s
for i in `seq $EXEC_COUNT`
do
	echo '尝试检查基础服务状态，第'$i'次'
	rm -f /opt/nacos.json
	curl http://$NACOS_ADDR/nacos/v1/ns/operator/servers?healthy=true -o /opt/nacos.json -s
  NACOS_STATUS=`sed -r 's/.*\"state\":\"([A-Z]+)\".*/\1\ /' /opt/nacos.json`
  echo "nacos服务状态${NACOS_STATUS}"
	if [ $NACOS_STATUS == "UP" ]
	then
		echo "基础服务状态正常！"
		break
  else
    echo "基础服务状态异常！"
	fi
	sleep $WAIT_TIME
done

# 注册容器和配置到配置平台
sh /opt/container-restart.sh

# 项目日志输出绝对路径
LOG_DIR=${BASE_PATH}"/logs"
LOG_FILE="${APPLICATION}.log"
LOG_PATH="${LOG_DIR}/${LOG_FILE}"
# 创建日志存储路径
mkdir -p ${LOG_DIR}

# SERVER_PORT端口
if [ -z ${SERVER_PORT} ]; then
nohup java ${JAVA_OPT} -Dfile.encoding=UTF-8 -Dlogging.config=${CONFIG_DIR}logback-spring.xml -jar ${BASE_PATH}/boot/${APPLICATION_JAR} \
    --spring.cloud.config_addr=${NACOS_ADDR} \
    --spring.cloud.nacos.discovery.server-addr=${NACOS_ADDR} \
    --spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE} \
    --spring.cloud.nacos.discovery.group=${NACOS_GROUP} \
    --spring.config.location=${CONFIG_DIR}   > /dev/null 2>&1
else
# 参数全部传递，启动Jar包进程
nohup java ${JAVA_OPT} -Dfile.encoding=UTF-8 -Dlogging.config=${CONFIG_DIR}logback-spring.xml -jar ${BASE_PATH}/boot/${APPLICATION_JAR} \
    --spring.cloud.config_addr=${NACOS_ADDR} \
    --spring.cloud.nacos.discovery.server-addr=${NACOS_ADDR} \
    --server.port=${SERVER_PORT} \
    --spring.cloud.nacos.discovery.namespace=${NACOS_NAMESPACE} \
    --spring.cloud.nacos.discovery.group=${NACOS_GROUP} \
    --spring.config.location=${CONFIG_DIR}   > /dev/null 2>&1
fi
